/* 
 * File:   Lista.h
 * Author: Vagner Clementino
 *
 * Created on 11 de Março de 2012, 19:16
 */

#include "Vertice.h"

typedef struct{
    Vertice v;
    struct Nodo* next;
}Nodo;

typedef Nodo* pNodo;

typedef struct{
    int num_itens;
    pNodo primeiro;
    pNodo ultimo;
}Head;

typedef Head* Lista;

/*Cria uma lista vazia*/
Lista cria_lista_vazia(void);

/*Cria dinamicamente espaco para um nodo da lista*/
pNodo cria_nodo();

/*Insere uma Pessoa p na lista l*/
void insere_item(Lista* l, Vertice* p);

/*Imprime o conteudo de uma lista l, sabendo o tamanho da lista de preferecia
 * das pessoas.
 */
void imprime_lista(const Lista l);

/*Busca a pessoa de id id_pessoa na lista l retornando
 * um ponteiro para a struct pessoa no caso de sucesso e
 * NULL caso contrario.
 */
Vertice* busca_vertice(int id, const Lista l);

/*Verifica se a lista l esta vazia. Retorna 1 se a lista estiver vazia
 * ou 0 (zero) caso contrario.
 */
int esta_vazia(const Lista l);

/*Remove todo os itens de uma lista*/
void remove_todos(Lista* l);
